import 'package:dio/dio.dart';
import 'package:im_flutter_sdk_example/utils/global.dart';

/// 初始化dio 中科院 国科控股
Dio initDio() {
  BaseOptions _baseOptions = BaseOptions(
    // baseUrl: "https://face.innovationgloble.cn/api",
    baseUrl: "http://localhost:8889",
  );

  Dio dio = Dio(_baseOptions);

  dio.interceptors
      .add(InterceptorsWrapper(onRequest: (RequestOptions options) async {
    if (G.user.data != null) {
      options.headers['token'] = G.user.data.token;
      options.headers['referer'] = '';
    }
    return options;
    // 如果你想完成请求并返回一些自定义数据，可以返回一个`Response`对象或返回`dio.resolve(data)`。
    // 这样请求将会被终止，上层then会被调用，then中返回的数据将是你的自定义数据data.
    // 如果你想终止请求并触发一个错误,你可以返回一个`DioError`对象，或返回`dio.reject(errMsg)`，
    // 这样请求将被中止并触发异常，上层catchError会被调用。
  }, onResponse: (Response response) async {
    // 在返回响应数据之前做一些预处理
    if (response.data['status'] != 1) {
      if (response.data['status'] != 20) {
        await G.toast(response.data['message']);
      }
      if (response.data['status'] == 10) {
        // 重新登录
        print("dio.interceptors: $response");
        G.pushNamed('/login_method');
      }
      response.data = null;
    }
    return response;
  }, onError: (DioError e) async {
    // G.toast(e.message);
    print('当请求失败时做一些预处理 ${e.message}');
    G.dismissLoading();
    return e; //continue
  }));

  return dio;
}
